ほぼ週刊AWSマイスターシリーズ第10回 – EMR編に参加しました
こんにちは。くろの(福田)です。
先日AWSのオンラインセミナーシリーズである「ほぼ週刊AWSマイスターシリーズ」が開催されました。第10回目は大谷さんによるAmazon Elastic Map Reduceでした。
■開催概要
- 日時:2011年11月30日(水)17時~18時
- 場所:オンラインセミナー
- 講師:AWS大谷さん
[slideshare id=10593539&doc=2011113010aws-meister-emr-public-111214125523-phpapp02]
AWSマイスターシリーズはほぼ毎週AWSの中の人がAWSの各サービスに関して詳細に解説をしてくれるとても^10ありがたいオンラインセミナーです。
クラスメソッドでは多くの社員がセミナーに参加しています。
■セミナー開始に先立って
今週のプレゼントはウィンドブレーカー。豆情報としては絶賛AWS社員募集中!
■ネタ
Hadoopはイケテナイヨ。理由ハ下記画像ガ○○ダカラダヨ
(ネタ終わり)
■Apache Hadoop
- Big Dataの取り扱い
- Hadoopはオープンソース製品。下記2つで構成される
- HDFS(Hadoop Distributed File System)
- MapReduce
- メリット
- スケーラブル
- 誰でも入手可能
- 柔軟性
■Hadoopの処理の流れ
- 大元の大量データがある。このデータから平均値、最大値、分析結果、計算結果といった「人間が理解しやすい(元データに比べると非常に小量な)数値」を取得したい
- データが非常に多いので、いくつかのグループに分割する(チャンクに分解)
- Mapする:特定のルールで各グループを細かく細分化する
- Shuffleする:グループ(チャンク)ごとのマッピング結果で同じものを集める
- Reduceする:あつまったマッピング結果を集計してデータ量を圧縮(Reduce=縮小)する。
- 「人間が理解しやすい」ように圧縮された少量のデータが出力される
※セミナーではフルーツジュースの例が紹介されていました。
(参考)いまさら聞けないHadoopとテキストマイニング入門 - @IT http://www.atmarkit.co.jp/fjava/rensai4/hadoop_tm01/01.html
■RDBMSとHadoopの違い
RDBMS | Hadoop |
---|---|
事前定義したスキーマ | スキーマなし |
1台で稼働する事が前提 | 分散・強調して動くことが前提 |
SQLによるアクセス | SQLでない複数言語サポート |
リニアにスケールしない | リニアにスケールする |
リアルタイム処理 | バッチ処理 |
小規模データ | 大規模データ |
構造化データ | 半構造化データ |
※基本的にRDBMSでもデータ分析は賄える。 ※HadoopでBig Dataではないデータの分析も行えます。もちろんBig Dataの分析は得意
■Hadoopの課題
- Hadoopのスケーラビリティを活かすには大量のサーバーが必要
- 大量にサーバーを購入してしまうとノードの追加縮小が自由にはできない
- データをHDFSだけに保存するのはリスク
■Amazon Elastic MapReduce
- Hadoopをいつでもオンデマンドで利用可能にしたサービス
- 開発者はデータの分析・解析アプリケーションに集中
- AWSサービスとの強力なインテグレーション
- Big Data処理のための煩雑なタスクが不要
- 解析をトライアンドエラーできる
※Elasticity、AWS SDK、Amazon S3連携がポイント!
■Amazon EMR全体アーキテクチャ
- データソースから入力データををAmazon S3に保存
- 消失の恐れが無い(SLA=99.999999999%)
- Amazon EMRを起動する
- EMR Hadoop Clusterがオンデマンドで生成され、分析が行われる
- Masterインスタンスグループ
- Coreインスタンスグループ
- Taskインスタンスグループ
- 出力結果がAmazon S3に保存される。メタデータはAmazon SimpleDBに保存される
■Amazon EMRコンポーネント
- インスタンスグループ
- Master
- Core
- Task
- Master:ジョブ全体を管理。1台のみ起動
- Core Node:MapReduceを実行。HDFSのDataNodeを持つ。複数台起動。TaskTrackerも搭載
- Task Node:オプション。MapReduceのみを実行
■Amazon EMRとAWSプラットフォーム
- Amazon EC2
- Amazon S3:Amazon EMRのデータおよびアプリケーションのアップロード先
- SimpleDB:Amazon EMRのジョブ状態情報を保持
- IAM:Amazon EMRのアクションを制限
■Amazon EMRでの処理の流れ
- Amazon S3のバケットにデータをアップロードする
- Amazon EMR上にジョブフローを生成する
- AWS Management Console
- コマンドライン
- REST API
- Amazon S3のバケットから結果を取得する
※ジョブフロー:データ分析処理。Amazon EMRの場合はこの処理能力をスケールアウト/インする事が可能
■Amazon EMRでのアプリケーション開発
- Hadoop Streaming
- Perl、PHPなどのstdin/stdoutで連携
- Hive
- SQLライクにクエリが記述可能
- アドホックな(特定目的の)クエリに最適
- MapReduceアプリケーション
- Javaで記述する
- 自由度は高いが、大変
HiveのWikiのGettingStartedのクエリサンプル
hive> SELECT a.foo FROM invites a WHERE a.ds='2008-08-15';
■EMR機能:稼働中ジョブフローの拡張
■EMR機能:稼働中ジョブフローの拡張/伸縮
■Amazon EMRが有効な領域
- データマイニング/BI
- データウェアハウスアプリケーション
- 大量ファイル処理・変換
- バイオインフォマティクス(遺伝子解析)
- 金融シミュレーション(モンテカルロ計算等)
- Webインデックス構築
■大規模データ処理=Elastic Batch Processing
- Hadoopデファクト分散処理フレームワーク
- Amazon EMR
- Amazon EC2 Cluster Compute HPCによるスーパーコンピュータクラスの高速処理
- Amazon EC2スポットインスタンスによるコスト削減
- 状況に応じてAWSリソースを拡張/縮減